package com.kehutong.payment.admin;

import com.kehutong.common.util.Token;
import com.kehutong.payment.entity.MerchantSettingCorp;
import com.kehutong.payment.service.MerchantSettingCorpService;
import org.coraframework.inject.Inject;
import org.coraframework.json.JSONArray;
import org.coraframework.json.JSONObject;
import org.coraframework.mvc.MvcAction;
import org.coraframework.mvc.http.Bean;
import org.coraframework.mvc.http.ReqMapping;
import org.coraframework.mvc.http.result.Result;
import org.coraframework.util.time.TimeUtil;

@MvcAction
@ReqMapping("/admin/setting/merchant/corp")
public class MerchantSettingCorpController {

    @Inject
    private MerchantSettingCorpService merchantCorpService;

    // 商户号绑定
    // 1、通过运营后台新增或更改商户号可直接修改
    // 2、该物业公司小区未绑定商户号可以通过客户中台直接绑定
    // 3、该物业公司小区已绑定商户号（未审核）可直接修改
    // 4、该物业公司小区已绑定商户号（已审核）,提示：如需修改，需联系管理员进行修改

    // 基座后台CRUD，audit默认false
    /**
     * 【收账管理】 - （未收和已收）
     * 搜索条件：小区、业主、收费类型、账单时间，已收、未收
     */
    @ReqMapping("/page")
    public Object page(JSONObject jsonObject, Token token){
        if(token.getCompanyNo()==null){  //超级管理员
            JSONArray jsonArray = jsonObject.getJSONArray("communityIds");
            if(jsonArray!=null){
                jsonObject.put("companyNo",jsonArray.get(0).toString());
                jsonObject.put("communityNo",jsonArray.get(1).toString());
            }
        }else{
            jsonObject.put("companyNo",token.getCompanyNo());
        }
        return merchantCorpService.findPage(jsonObject);
    }

    @ReqMapping("/list")
    public Object list(JSONObject jsonObject, Token token){
        return merchantCorpService.findList(jsonObject);
    }


    @Bean(newInstance=true, copy=true)
    @ReqMapping("/save")
    public Object save(MerchantSettingCorp entity, Token token) throws Exception {
        if(token.getCompanyNo()==null){  //超级管理员
            entity.setCompanyNo(entity.getCommunityIds().get(0));
            entity.setCommunityNo(entity.getCommunityIds().get(1));
            entity.setAuditStatus(true);
        }else{//企业管理员
            entity.setCompanyNo(token.getCompanyNo());
            entity.setCommunityNo(entity.getCommunityNo());
            entity.setCompanyName(token.getCompanyName());
            entity.setAuditStatus(false);
        }
        entity.setCreateName(token.getUsername());
        return merchantCorpService.saveMerchant(entity);
    }

    /**
     * 基座用
     * @param entity
     * @param token
     * @return
     * @throws Exception
     */
    @Bean(copy=true)
    @ReqMapping("/update")
    public Object update(MerchantSettingCorp entity,Token token) throws Exception {
        if(entity.isAuditStatus()){
            return Result.error(0,"配置已经生效，不能修改");
        }
        entity.setCompanyNo(token.getCompanyNo());
        entity.setCompanyName(token.getCompanyName());
        entity.setUpdateName(token.getUsername());
        return merchantCorpService.updateMerchant(entity);
    }

    /**
     * 管理后台用
     * @param entity
     * @param token
     * @return
     * @throws Exception
     */
    @Bean(copy=true)
    @ReqMapping("/updateFromAdmin")
    public Object updateFromAdmin(MerchantSettingCorp entity,Token token) throws Exception {
        if(token.getCompanyNo()==null){  //超级管理员
            entity.setCompanyNo(entity.getCommunityIds().get(0));
            entity.setCommunityNo(entity.getCommunityIds().get(1));
        }else{//企业管理员
            entity.setCompanyNo(token.getCompanyNo());
            entity.setCompanyName(token.getCompanyName());
            entity.setAuditStatus(false); //企业管理员编辑需要超级管理员审
            entity.setAuditTime(null);
        }
        entity.setUpdateName(token.getUsername());
        return merchantCorpService.updateMerchant(entity);
    }
    @ReqMapping("/get")
    public Object get(MerchantSettingCorp entity) throws Exception {

        return Result.success(entity);
    }

    @ReqMapping("/delete")
    public Object delete(MerchantSettingCorp entity) {

        return Result.success(merchantCorpService.deleteById(entity.getId()));
    }

    // 运营后台CRUD，audit默认false

    // 超管后台CRUD+审核通过
    @Bean(copy=true)
    @ReqMapping("/auditUpdate")
    public Object auditUpdate(MerchantSettingCorp entity,Token token) throws Exception {
        entity.setAuditStatus(true);
        entity.setUpdateName(token.getUsername());
        entity.setAuditTime(TimeUtil.timestamp());
        return merchantCorpService.updateMerchant(entity);
    }
}
